ess_source/ch01/SampleProject/src/Hello2030.java
ess_source/ch02/Ex 2-01/src/Hello.java
ess_source/ch02/Ex 2-02/src/CircleArea.java
ess_source/ch02/Ex 2-03/src/TypeConversion.java
ess_source/ch02/Ex 2-04/src/ScannerEx.java
ess_source/ch02/Ex 2-05/src/ArithmeticOperator.java
ess_source/ch02/Ex 2-06/src/BitShiftOperator.java
ess_source/ch02/Ex 2-07/src/LogicalOperator.java
ess_source/ch02/Ex 2-08/src/AssignmentIncDecOperator.java
ess_source/ch02/Ex 2-09/src/TernaryOperator.java
ess_source/ch02/Ex 2-10/src/Twenties.java
ess_source/ch02/Ex 2-11/src/Grading.java
ess_source/ch02/Ex 2-12/src/NestedIf.java
ess_source/ch02/Ex 2-13/src/Season.java
ess_source/ch02/Fig 2-07/src/TestSensor.java
ess_source/ch02/Fig 2-12/src/switchEx.java
ess_source/ch02/Fig 2-13/src/switchWithoutBreakEx.java
ess_source/ch03/Ex 3-01/src/ForSample.java
ess_source/ch03/Ex 3-02/src/WhileSample.java
ess_source/ch03/Ex 3-03/src/DoWhileSample.java
ess_source/ch03/Ex 3-04/src/NestedLoop.java
ess_source/ch03/Ex 3-05/src/ContinueExample.java
ess_source/ch03/Ex 3-06/src/BreakExample.java
ess_source/ch03/Ex 3-07/src/ArrayAccess.java
ess_source/ch03/Ex 3-08/src/ArrayLength.java
ess_source/ch03/Ex 3-09/src/foreachEx.java
ess_source/ch03/Ex 3-10/src/ScoreAverage.java
ess_source/ch03/Ex 3-11/src/ReturnArray.java
ess_source/ch03/Ex 3-12/src/DivideByZero.java
ess_source/ch03/Ex 3-13/src/DevideByZeroHandling.java
ess_source/ch03/Ex 3-14-1/src/InputException.java
ess_source/ch03/Ex 3-14-2/src/ArrayException.java
ess_source/ch03/Ex 3-15/src/NumException.java
ess_source/ch04/Ex 4-01/src/Circle.java
ess_source/ch04/Ex 4-02/src/Rectangle.java
ess_source/ch04/Ex 4-03/src/Circle.java
ess_source/ch04/Ex 4-04/src/Book.java
ess_source/ch04/Ex 4-05/src/Book.java
ess_source/ch04/Ex 4-06/src/CircleArray.java
ess_source/ch04/Ex 4-07/src/BookArray.java
ess_source/ch04/Ex 4-08/src/ArrayPassing.java
ess_source/ch04/Ex 4-09/src/GarbageEx.java
ess_source/ch04/Ex 4-10/src/AccessEx.java
ess_source/ch04/Ex 4-11/src/CalcEx.java
ess_source/ch04/Fig 4-14/src/Circle.java
ess_source/ch04/Fig 4-15/src/Circle.java
ess_source/ch04/Fig 4-16/src/Circle.java
ess_source/ch04/Fig 4-19/src/CallByValue.java
ess_source/ch04/Fig 4-20/src/ReferencePassing.java
ess_source/ch04/Fig 4-21/src/ArrayParameter.java
ess_source/ch04/Fig 4-24/src/Samp.java
ess_source/ch04/Fig 4-27/src/P/A.java
ess_source/ch04/Fig 4-27/src/Q/B.java
ess_source/ch04/Fig 4-27/src/Q/C.java
ess_source/ch04/Fig 4-27/src/Q/D.java
ess_source/ch04/Fig 4-28/src/A.java
ess_source/ch04/Fig 4-28/src/Q/B.java
ess_source/ch04/Fig 4-28/src/Q/C.java
ess_source/ch05/Ex 5-01/src/ColorPointEx.java
ess_source/ch05/Ex 5-02/src/SuperEx.java
ess_source/ch05/Ex 5-03/src/InstanceOfEx.java
ess_source/ch05/Ex 5-04/src/MethodOverridingEx.java
ess_source/ch05/Ex 5-05/src/GoodCalc.java
ess_source/ch05/Ex 5-06/src/InterfaceEx.java
ess_source/ch05/Fig 5-07/src/ConstructorEx.java
ess_source/ch05/Fig 5-08/src/ConstructorEx2.java
ess_source/ch05/Fig 5-09/src/ConstructorEx2.java
ess_source/ch05/Fig 5-10/src/ConstructorEx3.java
ess_source/ch05/Fig 5-11/src/ConstructorEx4.java
ess_source/ch05/Fig 5-13/src/UpcastingEx.java
ess_source/ch05/Fig 5-14/src/DowncastingEx.java
ess_source/ch05/Fig 5-20/src/SubObject.java
ess_source/ch05/Fig 5-20/src/SuperObject.java
ess_source/ch05/Fig 5-21/src/SubObject.java
ess_source/ch05/Fig 5-6a/src/P/A.java
ess_source/ch05/Fig 5-6a/src/P/B.java
ess_source/ch05/Fig 5-6b/src/PA/A.java
ess_source/ch05/Fig 5-6b/src/PB/B.java
ess_source/ch06/Ex 6-1/src/ObjectPropertyEx.java
ess_source/ch06/Ex 6-2/src/ToStringEx.java
ess_source/ch06/Ex 6-3/src/EqualsEx.java
ess_source/ch06/Ex 6-4/src/RectEx.java
ess_source/ch06/Ex 6-5/src/WrapperEx.java
ess_source/ch06/Ex 6-6/src/StringEx.java
ess_source/ch06/Ex 6-7/src/StringTokenizerEx.java
ess_source/ch06/Ex 6-8/src/MathEx.java
ess_source/ch06/Fig 6-5 PackageEx/src/app/GoodCalc.java
ess_source/ch06/Fig 6-5 PackageEx/src/lib/Calculator.java
ess_source/ch07/Ex 7-1/src/VectorEx.java
ess_source/ch07/Ex 7-2/src/PointVectorEx.java
ess_source/ch07/Ex 7-3/src/ArrayListEx.java
ess_source/ch07/Ex 7-4/src/IteratorEx.java
ess_source/ch07/Ex 7-5/src/HashMapDicEx.java
ess_source/ch07/Ex 7-6/src/MyStack.java
ess_source/ch08/Ex 8-1/src/MyFrame.java
ess_source/ch08/Ex 8-2/src/ContentPaneEx.java
ess_source/ch08/Ex 8-3/src/FlowLayoutEx.java
ess_source/ch08/Ex 8-4/src/BorderLayoutEx.java
ess_source/ch08/Ex 8-5/src/GridLayoutEx.java
ess_source/ch08/Ex 8-6/src/NullContainerEx.java
ess_source/ch08/Fig 8-1/src/SwingSampleFrame.java
ess_source/ch08/Fig 8-3/src/ContainerComponentEx.java
ess_source/ch08/Fig 8-4/src/FrameSample.java
ess_source/ch08/Fig 8-9/src/GridLayoutSample.java
ess_source/ch09/Ex 9-1/src/IndepClassListener.java
ess_source/ch09/Ex 9-2/src/InnerClassListener.java
ess_source/ch09/Ex 9-3/src/AnonymousClassListener.java
ess_source/ch09/Ex 9-4/src/MouseListenerEx.java
ess_source/ch09/Ex 9-5/src/MouseAdapterEx.java
ess_source/ch09/Ex 9-6/src/KeyCharEx.java
ess_source/ch09/Ex 9-7/src/FlyingTextEx.java
ess_source/ch09/Fig 9-5/src/MouseEventAllEx.java
ess_source/ch10/Ex 10-01/src/JComponentEx.java
ess_source/ch10/Ex 10-02/src/LabelEx.java
ess_source/ch10/Ex 10-03/src/ButtonImageEx.java
ess_source/ch10/Ex 10-04/src/CheckBoxEx.java
ess_source/ch10/Ex 10-05/src/CheckBoxItemEventEx.java
ess_source/ch10/Ex 10-06/src/RadioButtonEx.java
ess_source/ch10/Ex 10-07/src/TextFieldEx.java
ess_source/ch10/Ex 10-08/src/TextAreaEx.java
ess_source/ch10/Ex 10-09/src/ListEx.java
ess_source/ch10/Ex 10-10/src/ComboActionEx.java
ess_source/ch10/Ex 10-11/src/MenuEx.java
ess_source/ch10/Ex 10-12/src/MenuActionEventEx.java
ess_source/ch10/Ex 10-13/src/OptionPaneEx.java
ess_source/ch11/Ex 11-1/src/paintJPanelEx.java
ess_source/ch11/Ex 11-2/src/GraphicsColorFontEx.java
ess_source/ch11/Ex 11-3/src/GraphicsDrawLineEx.java
ess_source/ch11/Ex 11-4/src/GraphicsFillEx.java
ess_source/ch11/Ex 11-5/src/GraphicsDrawImageEx1.java
ess_source/ch11/Ex 11-6/src/GraphicsDrawImageEx2.java
ess_source/ch11/Ex 11-7/src/GraphicsDrawOvalMouseEx.java
ess_source/ch11/Ex 11-8/src/GraphicsDrawLineMouseEx.java
ess_source/ch11/Fig 11-2-1/src/GraphicsDrawOvalEx.java
ess_source/ch11/Fig 11-2-2/src/GraphicsDrawRectEx.java
ess_source/ch11/Fig 11-2-3/src/GraphicsDrawRoundRectEx.java
ess_source/ch11/Fig 11-3-1/src/GraphicsDrawArcEx.java
ess_source/ch11/Fig 11-3-2/src/GraphicsDrawPolygonEx.java
ess_source/ch12/Ex 12-1/src/ThreadTimerEx.java
ess_source/ch12/Ex 12-2/src/RunnableTimerEx.java
ess_source/ch12/Ex 12-3/src/ThreadMainEx.java
ess_source/ch12/Ex 12-4/src/VibratingFrame.java
ess_source/ch12/Ex 12-5/src/SynchronizedEx.java
ess_source/ch12/Ex 12-6/src/TabAndThreadEx.java
ess_source/ch12/Fig 12-5/src/TestThread.java
ess_source/ch13/Ex 13-1/src/FileReaderEx.java
ess_source/ch13/Ex 13-2/src/FileWriterEx.java
ess_source/ch13/Ex 13-3/src/FileOutputStreamEx.java
ess_source/ch13/Ex 13-4/src/FileInputStreamEx.java
ess_source/ch13/Ex 13-5/src/FileClassExample.java
ess_source/ch13/Ex 13-6/src/TextCopy.java
ess_source/ch13/Ex 13-7/src/BinaryCopy.java
ess_source/ch13/Ex 13-8/src/BlockBonaryCopy.java
import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyLabel extends JLabel { int barSize = 0; // ¹ÙÀÇ Å©±â int maxBarSize; MyLabel(int maxBarSize) { this.maxBarSize = maxBarSize; } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.MAGENTA); int width = (int) (((double)(getWidth()))/maxBarSize*barSize); if(width==0) return; // Å©±â°¡ 0À̱⠶§¹®¿¡ ¹Ù¸¦ ±×¸± ÇÊ¿ä ¾øÀ½ g.fillRect(0, 0, width, this.getHeight()); } synchronized void fill() { if(barSize == maxBarSize) { try { wait(); // ¹ÙÀÇ Å©±â°¡ ÃÖ´ëÀ̸é, ComsumerThread¿¡ ÀÇÇØ ¹ÙÀÇ Å©±â°¡ ÁÙ¾îµé ¶§±îÁö ´ë±â } catch (InterruptedException e) { return; } } barSize++; repaint(); // ¹Ù ´Ù½Ã ±×¸®±â notify(); // ±â´Ù¸®´Â ConsumerThread ½º·¹µå ±ú¿ì±â } synchronized void consume() { if(barSize == 0) { try { wait(); // ¹ÙÀÇ Å©±â°¡ 0ÀÌ¸é ¹ÙÀÇ Å©±â°¡ 0º¸´Ù Ä¿Áú¶§±îÁö ´ë±â } catch (InterruptedException e) { return; } } barSize--; repaint(); // ¹Ù ´Ù½Ã ±×¸®±â notify(); // ±â´Ù¸®´Â À̺¥Æ® ½º·¹µå ±ú¿ì±â } } class ConsumerThread extends Thread { MyLabel bar; ConsumerThread(MyLabel bar) { this.bar = bar; } public void run() { while(true) { try { sleep(100); bar.consume(); // 0.1Ãʸ¶´Ù ¹Ù¸¦ 1¾¿ ÁÙÀδÙ. } catch (InterruptedException e) { return; } } } } public class TabAndThreadEx extends JFrame { MyLabel bar = new MyLabel(100); // ¹ÙÀÇ ÃÖ´ë Å©±â¸¦ 100À¸·Î ¼³Á¤ TabAndThreadEx(String title) { super(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(null); bar.setBackground(Color.ORANGE); bar.setOpaque(true); bar.setLocation(20, 50); bar.setSize(300, 20); // 300x20 Å©±âÀÇ ¹Ù c.add(bar); // ÄÁÅÙÆ®ÆÒ¿¡ Å° À̺¥Æ® Çڵ鷯 µî·Ï c.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { bar.fill(); // Å°¸¦ ´©¸¦¶§¸¶´Ù ¹Ù°¡ 1¾¿ Áõ°¡ÇÑ´Ù. } }); setSize(350,200); setVisible(true); c.requestFocus(); // ÄÁÅÙÆ®ÆÒ¿¡°Ô Å° ó¸®±Ç ºÎ¿© ConsumerThread th = new ConsumerThread(bar); // ½º·¹µå »ý¼º th.start(); // ½º·¹µå ½ÃÀÛ } public static void main(String[] args) { new TabAndThreadEx("¾Æ¹«Å°³ª »¡¸® ´·¯ ¹Ù ä¿ì±â"); } }